package com.xiangxg.jvm.classloader;

/*

 * 对于静态字段来说，只有直接定义了该 字段的类才会被初始化（至于有没有被加载？用下面的参数追踪）
 * -XX:+TraceClassLoading,用于追踪类的加载信息并打印出来
 * -XX:+<option>表示开启option选项
 * -XX:-<option>表示关闭option选项
 * -XX:<option>=<value>,表示将option选项的值设置为value
 * 输出结果
 * [Loaded com.xiangxg.jvm.MyParent1 from file:/D:/code/jvm_lecture/build/classes/java/main/]
 * [Loaded com.xiangxg.jvm.MyChild1 from file:/D:/code/jvm_lecture/build/classes/java/main/]
 * 场景1的结果
 *   MyParent1 static block
 *   hello world
 *
 * 场景2结果(当一个类被初始化的时候要求所有父类都要被初始化)
 *  MyParent1 static block
 *  MyChild1 static block
 *  hello world

 */

public class MyTest1 {
    public static void main(String[] args) {
        //场景1
        System.out.println(MyChild1.str);
        //场景2
        //System.out.println(MyChild1.str2);
    }
}
class MyParent1{
    public static String str="hello world";
    static {
        System.out.println("MyParent1 static block");
    }
}
class MyChild1 extends MyParent1{
    public static String str2="hello world";

    static {
        System.out.println("MyChild1 static block");
    }
}
